package com.neusoft.resturant.mapper;


import com.neusoft.resturant.entity.Address;
import io.lettuce.core.dynamic.annotation.Param;

import java.util.Date;
import java.util.List;

/**
 * 表示收货地址持久层的接口
 */
public interface AddressMapper {
    /**
     * 插入用户的收货地址数据
     *
     * @param address 收货地址的数据
     * @return 受影响的行数
     */
    Integer insert(Address address);

    /**
     * 根据用户的uid统计地址的数量
     *
     * @param uid 用户的id
     * @return 当前收货地址的总数
     */
    Integer countByUid(Integer uid);

    /**
     * 根据用户的id查询用户的收货地址数据
     *
     * @param uid 用户的uid
     * @return 收货地址的数据
     */
    List<Address> findByUidAddresses(Integer uid);

    /**
     * 根据aid查询收货地址数据
     *
     * @param aid 收货地址数据
     * @return 收货地址数据，如果没有找到则返回null
     */
    Address findByAidAddress(Integer aid);

    /**
     * 根据用户的uid值来修改用户的收货地址设置为非默认
     *
     * @param uid 用户的uid
     * @return 受影响的行数
     */
    Integer updateNonDefault(Integer uid);

    /**
     * @param aid
     * @return
     */
    Integer updateIsDefaultByAid(@Param("aid") Integer aid,
                                 @Param("username") String modifiedUser,
                                 @Param("time") Date modifiedTime);

    /**
     * 根据收货地址的id删除收货地址的数据
     *
     * @param aid 收货地址的id
     * @return 受影响的行数
     */
    Integer deleteByAidInteger(Integer aid);

    /**
     * 根据用户的uid查询当前用户最后一次修改的收货地址数据
     *
     * @param uid 用户id
     * @return 收获地址数据
     */
    Address findLastModified(Integer uid);
}
